package registnet.records;

import java.util.List;

public interface ICourse {

	
	/**
	 * Gets the code assigned to the course
	 * 
	 * @return 	The code assigned to the course
	 */
	public String getCourseCode();
	
	
	/**
	 * Sets the code assigned to the course
	 * 	
	 * @param courseCode - The code assigned to the course
	 */
	public void setCourseCode(String courseCode);
	
	
	/**
	 * Gets the name of the course
	 * 
	 * @return 	The name of the course
	 */
	public String getCourseName();
	
	
	/**
	 * Sets the name of the course
	 * 
	 * @param courseName - The name of the course
	 */
	public void setCourseName(String courseName);
	
	
	/**
	 * Gets the number of units that can be earned for taking the course
	 * 
	 * @return 	The number of units that can be earned for taking the course
	 */
	public int getUnit();
	

	/**
	 * Sets the number of units that can be earned for taking the course
	 * 
	 * @param unit - The number of units that can be earned for taking the course
	 */
	public void setUnit(int unit);
	
	
	/**
	 * Gets the semester when the course should be taken
	 * 
	 * @return 	The semester when the course should be taken
	 */
	public int getSemester();
	
	
	/**
	 * Sets the semester when the course should be taken
	 * 
	 * @param semester - The semester when the course should be taken
	 */
	public void setSemester(int semester);
	
	
	/**
	 * Gets the year level when the course should be taken
	 * 
	 * @return 	The year level when the course should be taken
	 */
	public int getYear();
	
	
	/**
	 * Sets the year level when the course should be taken
	 * 
	 * @param year - The year level when the course should be taken
	 */
	public void setYear(int year);
	
	
	/**
	 * Gets the list of prerequisites of the course
	 * 
	 * @return 	The list of prerequisites of the course
	 */
	public List<IPrerequisite> getPrerequisites();
	
	
	/**
	 * Adds a prerequisite of the course
	 * 
	 * @param prerequisites - The list of prerequisites of the course
	 */
	public void addPrerequisite(IPrerequisite prerequisite);
	
	
	/**
	 * Gets the department that offers the course
	 * 
	 * @return 	The department that offers the course
	 */
	public Department getDepartment();
	
	
	/**
	 * Sets the department that offers the course
	 * 
	 * @param department - The department that offers the course
	 */
	public void setDepartment(Department departent);
	
}
